This is an overview of the means and first-order relationships among scales included in Packets 1-3.
These packets included 26 scales or subscales, including the following:
- Packet 1:
- Absorption (Tellegen); range: 0 to 34
- Absorption extra (a handful of extra questions extra questions); range: 0 to 4
- Daily spiritual experiences #1-14 (Underwood & Teresi); range: 0 to 70
- Daily spiritual experiences #15-16 (Underwood & Teresi); range: 0 to 10
- Spiritual events (Luhrmann); range: 0 to 88
- Packet 2:
- Sensory seeking (Brown et al.); range: -28 to 28
- Body awareness (Shields et al.); range: -36 to 36
- Attention to feelings (Salovey et al.); range: -42 to 42
- Hallucination (Alderson-Day); range: 0 to 27
- VISQ: dialogic speech (McCarthy-Jones & Fernyhough); range: -8 to 8
- VISQ: inner speech (McCarthy-Jones & Fernyhough); range: -10 to 10
- VISQ: evaluative/motivational speech (McCarthy-Jones & Fernyhough); range: -8 to 8
- Inner speech (Hardy/Bentall); range: -20 to 20
- Packet 3:
- Hearing events (Posey & Losch); range: 0 to 18
- Encoding style (Lewicki); range: 0 to 40
- Mind metaphors (Van Elk); range: -16 to 16
- Metacognition: lack of cognitive confidence (Wells et al.); range: -12 to 12
- Metacognition: positive beliefs re: worrying (Wells et al.); range: -12 to 12
- Metacognition: cognitive self-consciousness (Wells et al.); range: -12 to 12
- Metacognition: uncontrollability/danger (Wells et al.); range: -12 to 12
- Metacognition: need to control thoughts (Wells et al.); range: -12 to 12
- Dualism: mental states (Weisman); range: 0 to 8
- Dualism: life events (Weisman); range: 0 to 5
- Dualism: inanimate consciousness (Weisman); range: 0 to 6
- Dualism: minds, selves, & world (Weisman); range: 0 to 9
- Dualism: epistemology (Weisman); range: 0 to 5
Means by site
First, let’s compare the mean responses to each subscale across the 5 sites. I’ll plot each subscale in a separate mini-plot (denoted in the title of each mini-plot). The x-axis and color denote the site (US, Ghana, Thailand, China, or Vanuatu). Note the the range y-axis varies between mini-plots. The dot shows what the mean response was for that subscale for that site, and the error bars show a 95% confidence interval for that mean.
Joining, by = c("ctry", "packet", "subscale")

Cluster analysis
… of sites
Now let’s try a formal analysis for determining how similar these 5 sites are to each other.
Hierarchical clustering basically works like this: If there are 5 things - A, B, C, D, and E - this analysis will try to group pairs of like things together. E.g., first it might pair A and D together, then it will pretend that there are just 4 things - AD, B, C, and E. Then it might pair B and C together, and then pretend that there are just 3 things - AD, BC, and E. Then it might pair AD and BC together, and then pretend that there are just 2 things: ADBC and E. It will do this until there is just one “thing” left.
So to read this plot, look for the pairings. Sites that are on the same “branch” in this “dendrogram” showed similar patterns of means on the subscales. The closer together they are on that branch, the more similar they were.

… of subscales
Now let’s do the same thing for the subscales: Which subscales “hang together”?
To read this plot, again, look for the pairings. Subscales that are on the same “branch” in this “dendrogram” showed similar patterns of means across the 5 sites. The closer together they are on that branch, the more similar they were.

Correlations among subscales by individuals
Now let’s take a closer look at which subscales seem to “hang together,” by looking at the correlations between scales across individual particpiants.
It’s important to keep in mind that most people didn’t fill out all 26 subscales. So we’ll focus on just looking at how the subscales within each packet (Packet 1, 2, or 3) “hang together” for the people who completed that packet.
As above, to read these plots, find one scale on the x-axis, and another scale on the y-axis. The value (and color) at that point in the grid shows you the correlation between these two subscale means across the 5 sites. The maximum possible correlation is +1 (red), and the minimum is -1 (blue). (Note that these scales are being presented in alphabetical order, not by any sort of clustering analysis.)
Packet 1
Setting row names on a tibble is deprecated.

Packet 2
Setting row names on a tibble is deprecated.

Packet 3
Setting row names on a tibble is deprecated.

All packets
Just for fun, here’s a look at the correlations among individual participants’ subscale scores across all scales. Note that some of these pairs of subscales probably have very few observations going into these correlations!! So take this with a grain of salt.
Setting row names on a tibble is deprecated.

Correlations among subscales by site
If we were feeling wacky, we could also look at the correlations between scales in their means for each site. This is a totally weird way to look at this, because there are only 5 sites (instead of, e.g., 100 or 200). But just for fun…
To read this plot, find one scale on the x-axis, and another scale on the y-axis. The value (and color) at that point in the grid shows you the correlation between these two subscale means across the 5 sites. The maximum possible correlation is +1 (red), and the minimum is -1 (blue).
I ordered the scales according to the cluster analysis we just did above, so you can see “patches” of scales that all tended to have similar patterns of means across sites.

LS0tCnRpdGxlOiAnUGFja2V0cyAxLTM6IEdlbmVyYWwgZXhwbG9yYXRpb24nCnN1YnRpdGxlOiAnTGFzdCB1cGRhdGVkIDIwMTgtMDQtMDUnCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiB0cnVlCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0Ci0tLQoKYGBge3IsIGluY2x1ZGUgPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CiMgc2V0IHdvcmtpbmcgZGlyZWN0b3IKIyBzZXR3ZCgiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzLyIpCgojIGxvYWQgcGFja2FnZXMKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocm1zKQpsaWJyYXJ5KGdnZGVuZHJvKQoKIyBsb2FkIHF1ZXN0aW9uIGtleSAoaW5jbHVkaW5nIG1hbnVhbCByZXZlcnNlLWNvZGluZykKcXVlc3Rpb25fa2V5IDwtIHJlYWQuY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfcXVlc3Rpb25fa2V5X2J5aGFuZC5jc3YiKQoKIyBsb2FkIGRhdGEKZF93aWRlIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXF1ZXN0aW9uX3dpZGUuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKZF93aWRlX3N1YnNjYWxlIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXN1YnNjYWxlX3dpZGUuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKZF9sb25nIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXF1ZXN0aW9uX2xvbmcuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKZF9sb25nX3N1YnNjYWxlIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXN1YnNjYWxlX2xvbmcuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKCiMgbWFrZSBjdXN0b20gZnVuY3Rpb25zCnJvdW5kMiA8LSBmdW5jdGlvbih4KSB7Zm9ybWF0KHJvdW5kKHgsIDIpLCBkaWdpdHMgPSAyKX0KYGBgCgpUaGlzIGlzIGFuIG92ZXJ2aWV3IG9mIHRoZSBtZWFucyBhbmQgZmlyc3Qtb3JkZXIgcmVsYXRpb25zaGlwcyBhbW9uZyBzY2FsZXMgaW5jbHVkZWQgaW4gUGFja2V0cyAxLTMuCgpUaGVzZSBwYWNrZXRzIGluY2x1ZGVkIGByIGxlbmd0aChsZXZlbHMoZmFjdG9yKGRfbG9uZ19zdWJzY2FsZSRzdWJzY2FsZSkpKSAtIDFgIHNjYWxlcyBvciBzdWJzY2FsZXMsIGluY2x1ZGluZyB0aGUgZm9sbG93aW5nOgoKLSBQYWNrZXQgMToKICAgIC0gKipBYnNvcnB0aW9uKiogKFRlbGxlZ2VuKTsgcmFuZ2U6IDAgdG8gMzQKICAgIC0gKipBYnNvcnB0aW9uIGV4dHJhKiogKGEgaGFuZGZ1bCBvZiBleHRyYSBxdWVzdGlvbnMgZXh0cmEgcXVlc3Rpb25zKTsgcmFuZ2U6IDAgdG8gNAogICAgLSAqKkRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAjMS0xNCoqIChVbmRlcndvb2QgJiBUZXJlc2kpOyByYW5nZTogMCB0byA3MAogICAgLSAqKkRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAjMTUtMTYqKiAoVW5kZXJ3b29kICYgVGVyZXNpKTsgcmFuZ2U6IDAgdG8gMTAKICAgIC0gKipTcGlyaXR1YWwgZXZlbnRzKiogKEx1aHJtYW5uKTsgcmFuZ2U6IDAgdG8gODgKLSBQYWNrZXQgMjoKICAgIC0gKipTZW5zb3J5IHNlZWtpbmcqKiAoQnJvd24gZXQgYWwuKTsgcmFuZ2U6IC0yOCB0byAyOAogICAgLSAqKkJvZHkgYXdhcmVuZXNzKiogKFNoaWVsZHMgZXQgYWwuKTsgcmFuZ2U6IC0zNiB0byAzNgogICAgLSAqKkF0dGVudGlvbiB0byBmZWVsaW5ncyoqIChTYWxvdmV5IGV0IGFsLik7IHJhbmdlOiAtNDIgdG8gNDIKICAgIC0gKipIYWxsdWNpbmF0aW9uKiogKEFsZGVyc29uLURheSk7IHJhbmdlOiAwIHRvIDI3CiAgICAtICoqVklTUTogZGlhbG9naWMgc3BlZWNoKiogKE1jQ2FydGh5LUpvbmVzICYgRmVybnlob3VnaCk7IHJhbmdlOiAtOCB0byA4CiAgICAtICoqVklTUTogaW5uZXIgc3BlZWNoKiogKE1jQ2FydGh5LUpvbmVzICYgRmVybnlob3VnaCk7IHJhbmdlOiAtMTAgdG8gMTAKICAgIC0gKipWSVNROiBldmFsdWF0aXZlL21vdGl2YXRpb25hbCBzcGVlY2gqKiAoTWNDYXJ0aHktSm9uZXMgJiBGZXJueWhvdWdoKTsgcmFuZ2U6IC04IHRvIDgKICAgIC0gKipJbm5lciBzcGVlY2gqKiAoSGFyZHkvQmVudGFsbCk7IHJhbmdlOiAtMjAgdG8gMjAKLSBQYWNrZXQgMzoKICAgIC0gKipIZWFyaW5nIGV2ZW50cyoqIChQb3NleSAmIExvc2NoKTsgcmFuZ2U6IDAgdG8gMTgKICAgIC0gKipFbmNvZGluZyBzdHlsZSoqIChMZXdpY2tpKTsgcmFuZ2U6IDAgdG8gNDAKICAgIC0gKipNaW5kIG1ldGFwaG9ycyoqIChWYW4gRWxrKTsgcmFuZ2U6IC0xNiB0byAxNgogICAgLSAqKk1ldGFjb2duaXRpb246IGxhY2sgb2YgY29nbml0aXZlIGNvbmZpZGVuY2UqKiAoV2VsbHMgZXQgYWwuKTsgcmFuZ2U6IC0xMiB0byAxMgogICAgLSAqKk1ldGFjb2duaXRpb246IHBvc2l0aXZlIGJlbGllZnMgcmU6IHdvcnJ5aW5nKiogKFdlbGxzIGV0IGFsLik7IHJhbmdlOiAtMTIgdG8gMTIKICAgIC0gKipNZXRhY29nbml0aW9uOiBjb2duaXRpdmUgc2VsZi1jb25zY2lvdXNuZXNzKiogKFdlbGxzIGV0IGFsLik7IHJhbmdlOiAtMTIgdG8gMTIKICAgIC0gKipNZXRhY29nbml0aW9uOiB1bmNvbnRyb2xsYWJpbGl0eS9kYW5nZXIqKiAoV2VsbHMgZXQgYWwuKTsgcmFuZ2U6IC0xMiB0byAxMgogICAgLSAqKk1ldGFjb2duaXRpb246IG5lZWQgdG8gY29udHJvbCB0aG91Z2h0cyoqIChXZWxscyBldCBhbC4pOyByYW5nZTogLTEyIHRvIDEyCiAgICAtICoqRHVhbGlzbTogbWVudGFsIHN0YXRlcyoqIChXZWlzbWFuKTsgcmFuZ2U6IDAgdG8gOAogICAgLSAqKkR1YWxpc206IGxpZmUgZXZlbnRzKiogKFdlaXNtYW4pOyByYW5nZTogMCB0byA1CiAgICAtICoqRHVhbGlzbTogaW5hbmltYXRlIGNvbnNjaW91c25lc3MqKiAoV2Vpc21hbik7IHJhbmdlOiAwIHRvIDYKICAgIC0gKipEdWFsaXNtOiBtaW5kcywgc2VsdmVzLCAmIHdvcmxkKiogKFdlaXNtYW4pOyByYW5nZTogMCB0byA5CiAgICAtICoqRHVhbGlzbTogZXBpc3RlbW9sb2d5KiogKFdlaXNtYW4pOyByYW5nZTogMCB0byA1CgojIE1lYW5zIGJ5IHNpdGUKCkZpcnN0LCBsZXQncyBjb21wYXJlIHRoZSBtZWFuIHJlc3BvbnNlcyB0byBlYWNoIHN1YnNjYWxlIGFjcm9zcyB0aGUgNSBzaXRlcy4gSSdsbCBwbG90IGVhY2ggc3Vic2NhbGUgaW4gYSBzZXBhcmF0ZSBtaW5pLXBsb3QgKGRlbm90ZWQgaW4gdGhlIHRpdGxlIG9mIGVhY2ggbWluaS1wbG90KS4gVGhlIHgtYXhpcyBhbmQgY29sb3IgZGVub3RlIHRoZSBzaXRlIChVUywgR2hhbmEsIFRoYWlsYW5kLCBDaGluYSwgb3IgVmFudWF0dSkuIE5vdGUgdGhlIHRoZSByYW5nZSB5LWF4aXMgdmFyaWVzIGJldHdlZW4gbWluaS1wbG90cy4gVGhlIGRvdCBzaG93cyB3aGF0IHRoZSBtZWFuIHJlc3BvbnNlIHdhcyBmb3IgdGhhdCBzdWJzY2FsZSBmb3IgdGhhdCBzaXRlLCBhbmQgdGhlIGVycm9yIGJhcnMgc2hvdyBhIDk1JSBjb25maWRlbmNlIGludGVydmFsIGZvciB0aGF0IG1lYW4uIAoKYGBge3J9CmRfbG9uZ19zdWJzY2FsZV9ib290IDwtIGRfbG9uZ19zdWJzY2FsZSAlPiUKICBmaWx0ZXIoIWlzLm5hKHN1bV9zY29yZSkpICU+JQogIGdyb3VwX2J5KGN0cnksIHBhY2tldCwgc3Vic2NhbGUpICU+JQogIGRvKGRhdGEuZnJhbWUocmJpbmQoc21lYW4uY2wuYm9vdCguJHN1bV9zY29yZSkpKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGZpbHRlcihzdWJzY2FsZSAhPSAiYXR0biIpICU+JQogIGxlZnRfam9pbihkX2xvbmdfc3Vic2NhbGUgJT4lCiAgICAgICAgICAgICAgZmlsdGVyKCFpcy5uYShzdW1fc2NvcmUpKSAlPiUKICAgICAgICAgICAgICBjb3VudChjdHJ5LCBwYWNrZXQsIHN1YnNjYWxlKSkgJT4lCiAgbXV0YXRlKHBhY2tldCA9IHBhc3RlKCJwYWNrZXQiLCBwYWNrZXQpLAogICAgICAgICBjdHJ5ID0gZmFjdG9yKGN0cnksCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGFpbGFuZCIsICJjaGluYSIsICJ2YW51YXR1IikpLAogICAgICAgICBzdWJzY2FsZSA9IAogICAgICAgICAgIGZhY3RvcihzdWJzY2FsZSwKICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiZXh3bCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHdsX2V4dHJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHNlXzAxdG8xNCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2VfMTV0bzE2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZXYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3NlbnNvcnlfc2Vla2luZyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fYm9keV9hd2FyZW5lc3MiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3RyYWl0X21ldGFtb29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyMl9oYWxsdWNpbmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2RpYWxvZ2ljX3NwZWVjaCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2V2YWxfbW90aXZfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19oYXJkeV9iZW50YWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyX3Bvc2V5X2xvc2NoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb19sZXdpY2tpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YV92YW5fZWxrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X2NvbmZpZGVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfcG9zaXRpdmVfYmVsaWVmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9jb2duaXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfdW5jb250cm9sbGFiaWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfbmVlZF9jb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19tZW50YWxfc3RhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19saWZlX2V2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfaW5hbmltYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19zZWx2ZXNfc291bHNfd29ybGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2VwaXN0ZW1pYyIpLAogICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJhYnNvcnB0aW9uICh0ZWxsZWdlbikiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJzb3JwdGlvbiAoZXh0cmEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICgjMS0xNCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXMgKCMxNS0xNikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGlyaXR1YWwgZXZlbnRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNvcnkgc2Vla2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvZHkgYXdhcmVuZXNzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVudGlvbiB0byBmZWVsaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhbGx1Y2luYXRpb24iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZGlhbG9naWMgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZXZhbHVhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYXJpbmcgZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2Rpbmcgc3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW5kIG1ldGFwaG9ycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBsYWNrIG9mIGNvZ25pdGl2ZSBjb25maWRlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHBvc2l0aXZlIGJlbGllZnMgcmU6IHdvcnJ5aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGNvZ25pdGl2ZSBzZWxmLWNvbnNjaW91c25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogdW5jb250cm9sbGFiaWxpdHkvZGFuZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IG5lZWQgdG8gY29udHJvbCB0aG91Z2h0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1lbnRhbCBzdGF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBsaWZlIGV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGluYW5pbWF0ZSBjb25zY2lvdXNuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWluZHMsIHNlbHZlcywgJiB3b3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGVwaXN0ZW1vbG9neSIpKSkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDR9CmdncGxvdChkX2xvbmdfc3Vic2NhbGVfYm9vdCAlPiUKICAgICAgICAgbXV0YXRlKHN1YnNjYWxlID0gCiAgICAgICAgICAgICAgICAgIGZhY3RvcihzdWJzY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IAogICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJhYnNvcnB0aW9uXG4odGVsbGVnZW4pXG5yYW5nZTogMCB0byAzNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFic29ycHRpb25cbihleHRyYSlcbnJhbmdlOiAwIHRvIDQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXNcbih1bmRlcndvb2QgJiB0ZXJlc2k7ICMxLTE0KVxucmFuZ2U6IDAgdG8gNzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXNcbih1bmRlcndvb2QgJiB0ZXJlc2k7ICMxNS0xNilcbnJhbmdlOiAwIHRvIDEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Bpcml0dWFsIGV2ZW50c1xuKGx1aHJtYW5uKVxucmFuZ2U6IDAgdG8gODgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zb3J5IHNlZWtpbmdcbihicm93biBldCBhbC4pXG5yYW5nZTogLTI4IHRvIDI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9keSBhd2FyZW5lc3NcbihzaGllbGRzIGV0IGFsLilcbnJhbmdlOiAtMzYgdG8gMzYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbnRpb24gdG8gZmVlbGluZ3NcbihzYWxvdmV5IGV0IGFsLilcbnJhbmdlOiAtNDIgdG8gNDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYWxsdWNpbmF0aW9uXG4oYWxkZXJzb24tZGF5KVxucmFuZ2U6IDAgdG8gMjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBkaWFsb2dpYyBzcGVlY2hcbihtY2NhcnRoeS1qb25lcyAmIGZlcm55aG91Z2gpXG5yYW5nZTogLTggdG8gOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGlubmVyIHNwZWVjaFxuKG1jY2FydGh5LWpvbmVzICYgZmVybnlob3VnaClcbnJhbmdlOiAtMTAgdG8gMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBldmFsdWF0aXZlL21vdGl2YXRpb25hbCBzcGVlY2hcbihtY2NhcnRoeS1qb25lcyAmIGZlcm55aG91Z2gpXG5yYW5nZTogLTggdG8gOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlubmVyIHNwZWVjaFxuKGhhcmR5L2JlbnRhbGwpXG5yYW5nZTogLTIwIHRvIDIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhcmluZyBldmVudHNcbihwb3NleSAmIGxvc2NoKVxucmFuZ2U6IDAgdG8gMTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBzdHlsZVxuKGxld2lja2kpXG5yYW5nZTogMCB0byA0MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbmQgbWV0YXBob3JzXG4odmFuIGVsaylcbnJhbmdlOiAtMTYgdG8gMTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbGFjayBvZiBjb2duaXRpdmUgY29uZmlkZW5jZVxuKHdlbGxzIGV0IGFsLilcbnJhbmdlOiAtMTIgdG8gMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogcG9zaXRpdmUgYmVsaWVmcyByZTogd29ycnlpbmdcbih3ZWxscyBldCBhbC4pXG5yYW5nZTogLTEyIHRvIDEyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGNvZ25pdGl2ZSBzZWxmLWNvbnNjaW91c25lc3Ncbih3ZWxscyBldCBhbC4pXG5yYW5nZTogLTEyIHRvIDEyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHVuY29udHJvbGxhYmlsaXR5L2RhbmdlclxuKHdlbGxzIGV0IGFsLilcbnJhbmdlOiAtMTIgdG8gMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbmVlZCB0byBjb250cm9sIHRob3VnaHRzXG4od2VsbHMgZXQgYWwuKVxucmFuZ2U6IC0xMiB0byAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1lbnRhbCBzdGF0ZXNcbih3ZWlzbWFuKVxucmFuZ2U6IDAgdG8gOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGxpZmUgZXZlbnRzXG4od2Vpc21hbilcbnJhbmdlOiAwIHRvIDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBpbmFuaW1hdGUgY29uc2Npb3VzbmVzc1xuKHdlaXNtYW4pXG5yYW5nZTogMCB0byA2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWluZHMsIHNlbHZlcywgJiB3b3JsZFxuKHdlaXNtYW4pXG5yYW5nZTogMCB0byA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogZXBpc3RlbW9sb2d5XG4od2Vpc21hbilcbnJhbmdlOiAwIHRvIDUiKSkpICU+JQogICAgICAgICAjIGZpbHRlcighZ3JlcGwoInRoYWkiLCBzdWJzY2FsZSkpICU+JSAjIGdldCByaWQgb2YgdGhhaS1vbmx5IHNjYWxlcwogICAgICAgICBtdXRhdGUocGFja2V0ID0gZ3N1YigicGFja2V0ICIsICJQIiwgcGFja2V0KSksCiAgICAgICBhZXMoeCA9IGN0cnksIHkgPSBNZWFuLCBjb2xvciA9IGN0cnkpKSArCiAgZmFjZXRfd3JhcCh+IHJlb3JkZXIoaW50ZXJhY3Rpb24ocGFja2V0LCBzdWJzY2FsZSwgc2VwID0gIjogIiksCiAgICAgICAgICAgICAgICAgICAgICAgYXMubnVtZXJpYyhmYWN0b3IocGFja2V0KSkpLAogICAgICAgICAgICAgbmNvbCA9IDMsIHNjYWxlcyA9ICJmcmVlIikgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IExvd2VyLCB5bWF4ID0gVXBwZXIpKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSwgeSA9IExvd2VyKSwgCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV94ID0gMC4xNSwgaGp1c3QgPSAwKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShleHBhbmQgPSBjKDAsIDEpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKSArCiAgbGFicyh0aXRsZSA9ICJtZWFuIHN1YnNjYWxlIHNjb3JlcyBieSBzaXRlIiwKICAgICAgIHN1YnRpdGxlID0gIm9yZGVyZWQgYnkgcGFja2V0IChQMSwgUDIsIFAzKVxuZXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscyIsCiAgICAgICB4ID0gInNpdGUiLCBjb2xvciA9ICJzaXRlIiwKICAgICAgIHkgPSAibWVhbiBzdWJzY2FsZSBzY29yZSAocmFuZ2UgdmFyaWVzIGJ5IHN1YnNjYWxlKSIpCmBgYAoKIyBDbHVzdGVyIGFuYWx5c2lzCgpgYGB7cn0KY29yX2J5X3NpdGUgPC0gZF9sb25nX3N1YnNjYWxlX2Jvb3QgJT4lCiAgZmlsdGVyKCFncmVwbCgidGhhaSIsIHN1YnNjYWxlKSkgJT4lIAogIG11dGF0ZShzdWJzY2FsZSA9IGlmZWxzZShzdWJzY2FsZSA9PSAiaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGUoYXMuY2hhcmFjdGVyKHN1YnNjYWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N1YigicGFja2V0ICIsICJwIiwgcGFja2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gIl8iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKHN1YnNjYWxlKSkpICU+JQogIGRpc3RpbmN0KGN0cnksIHN1YnNjYWxlLCBNZWFuKSAlPiUKICBmaWx0ZXIoc3Vic2NhbGUgIT0gImlubmVyIHZvaWNlIikgJT4lCiAgdW5ncm91cCgpICU+JQogIHNwcmVhZChzdWJzY2FsZSwgTWVhbikgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygiY3RyeSIpCmBgYAoKIyMgLi4uIG9mIHNpdGVzCgpOb3cgbGV0J3MgdHJ5IGEgZm9ybWFsIGFuYWx5c2lzIGZvciBkZXRlcm1pbmluZyBob3cgc2ltaWxhciB0aGVzZSA1IHNpdGVzIGFyZSB0byBlYWNoIG90aGVyLiAKCkhpZXJhcmNoaWNhbCBjbHVzdGVyaW5nIGJhc2ljYWxseSB3b3JrcyBsaWtlIHRoaXM6IElmIHRoZXJlIGFyZSA1IHRoaW5ncyAtIEEsIEIsIEMsIEQsIGFuZCBFIC0gdGhpcyBhbmFseXNpcyB3aWxsIHRyeSB0byBncm91cCBwYWlycyBvZiBsaWtlIHRoaW5ncyB0b2dldGhlci4gRS5nLiwgZmlyc3QgaXQgbWlnaHQgcGFpciBBIGFuZCBEIHRvZ2V0aGVyLCB0aGVuIGl0IHdpbGwgcHJldGVuZCB0aGF0IHRoZXJlIGFyZSBqdXN0IDQgdGhpbmdzIC0gQUQsIEIsIEMsIGFuZCBFLiBUaGVuIGl0IG1pZ2h0IHBhaXIgQiBhbmQgQyB0b2dldGhlciwgYW5kIHRoZW4gcHJldGVuZCB0aGF0IHRoZXJlIGFyZSBqdXN0IDMgdGhpbmdzIC0gQUQsIEJDLCBhbmQgRS4gVGhlbiBpdCBtaWdodCBwYWlyIEFEIGFuZCBCQyB0b2dldGhlciwgYW5kIHRoZW4gcHJldGVuZCB0aGF0IHRoZXJlIGFyZSBqdXN0IDIgdGhpbmdzOiBBREJDIGFuZCBFLiBJdCB3aWxsIGRvIHRoaXMgdW50aWwgdGhlcmUgaXMganVzdCBvbmUgInRoaW5nIiBsZWZ0LgoKU28gdG8gcmVhZCB0aGlzIHBsb3QsIGxvb2sgZm9yIHRoZSBwYWlyaW5ncy4gU2l0ZXMgdGhhdCBhcmUgb24gdGhlIHNhbWUgImJyYW5jaCIgaW4gdGhpcyAiZGVuZHJvZ3JhbSIgc2hvd2VkIHNpbWlsYXIgcGF0dGVybnMgb2YgbWVhbnMgb24gdGhlIHN1YnNjYWxlcy4gVGhlIGNsb3NlciB0b2dldGhlciB0aGV5IGFyZSBvbiB0aGF0IGJyYW5jaCwgdGhlIG1vcmUgc2ltaWxhciB0aGV5IHdlcmUuCgpgYGB7ciwgZmlnLndpZHRoID0gMiwgZmlnLmFzcCA9IDAuNn0KY2x1c3Rfc2l0ZXMgPC0gaGNsdXN0KGRpc3QoY29yX2J5X3NpdGUpKQpnZ2RlbmRyb2dyYW0oY2x1c3Rfc2l0ZXMpICsKICBsYWJzKHRpdGxlID0gImhpZXJhcmNoaWNhbCBjbHVzdGVyaW5nIG9mIHNpdGVzIiwKICAgICAgIHN1YnRpdGxlID0gInVzaW5nIG1lYW4gc3Vic2NhbGUgc2NvcmVzIGJ5IHNpdGUiKQpgYGAKCiMjIC4uLiBvZiBzdWJzY2FsZXMKCk5vdyBsZXQncyBkbyB0aGUgc2FtZSB0aGluZyBmb3IgdGhlIHN1YnNjYWxlczogV2hpY2ggc3Vic2NhbGVzICJoYW5nIHRvZ2V0aGVyIj8gCgpUbyByZWFkIHRoaXMgcGxvdCwgYWdhaW4sIGxvb2sgZm9yIHRoZSBwYWlyaW5ncy4gU3Vic2NhbGVzIHRoYXQgYXJlIG9uIHRoZSBzYW1lICJicmFuY2giIGluIHRoaXMgImRlbmRyb2dyYW0iIHNob3dlZCBzaW1pbGFyIHBhdHRlcm5zIG9mIG1lYW5zIGFjcm9zcyB0aGUgNSBzaXRlcy4gVGhlIGNsb3NlciB0b2dldGhlciB0aGV5IGFyZSBvbiB0aGF0IGJyYW5jaCwgdGhlIG1vcmUgc2ltaWxhciB0aGV5IHdlcmUuCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNn0KY2x1c3Rfc3Vic2NhbGVzIDwtIGhjbHVzdChkaXN0KHQoY29yX2J5X3NpdGUpKSkKZ2dkZW5kcm9ncmFtKGNsdXN0X3N1YnNjYWxlcykgKwogIGxhYnModGl0bGUgPSAiaGllcmFyY2hpY2FsIGNsdXN0ZXIgb2Ygc3Vic2NhbGVzIiwKICAgICAgIHN1YnRpdGxlID0gInVzaW5nIG1lYW4gc3Vic2NhbGUgc2NvcmVzIGJ5IHNpdGUiKQpgYGAKCiMgQ29ycmVsYXRpb25zIGFtb25nIHN1YnNjYWxlcyBieSBpbmRpdmlkdWFscwoKTm93IGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB3aGljaCBzdWJzY2FsZXMgc2VlbSB0byAiaGFuZyB0b2dldGhlciwiIGJ5IGxvb2tpbmcgYXQgdGhlIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIHNjYWxlcyBhY3Jvc3MgaW5kaXZpZHVhbCBwYXJ0aWNwaWFudHMuIAoKSXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgbW9zdCBwZW9wbGUgZGlkbid0IGZpbGwgb3V0IGFsbCBgciBsZW5ndGgobGV2ZWxzKGZhY3RvcihkX2xvbmdfc3Vic2NhbGUkc3Vic2NhbGUpKSkgLSAxYCBzdWJzY2FsZXMuIFNvIHdlJ2xsIGZvY3VzIG9uIGp1c3QgbG9va2luZyBhdCBob3cgdGhlIHN1YnNjYWxlcyB3aXRoaW4gZWFjaCBwYWNrZXQgKFBhY2tldCAxLCAyLCBvciAzKSAiaGFuZyB0b2dldGhlciIgZm9yIHRoZSBwZW9wbGUgd2hvIGNvbXBsZXRlZCB0aGF0IHBhY2tldC4KCkFzIGFib3ZlLCB0byByZWFkIHRoZXNlIHBsb3RzLCBmaW5kIG9uZSBzY2FsZSBvbiB0aGUgeC1heGlzLCBhbmQgYW5vdGhlciBzY2FsZSBvbiB0aGUgeS1heGlzLiBUaGUgdmFsdWUgKGFuZCBjb2xvcikgYXQgdGhhdCBwb2ludCBpbiB0aGUgZ3JpZCBzaG93cyB5b3UgdGhlIGNvcnJlbGF0aW9uIGJldHdlZW4gdGhlc2UgdHdvIHN1YnNjYWxlIG1lYW5zIGFjcm9zcyB0aGUgNSBzaXRlcy4gVGhlIG1heGltdW0gcG9zc2libGUgY29ycmVsYXRpb24gaXMgKzEgKHJlZCksIGFuZCB0aGUgbWluaW11bSBpcyAtMSAoYmx1ZSkuIChOb3RlIHRoYXQgdGhlc2Ugc2NhbGVzIGFyZSBiZWluZyBwcmVzZW50ZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLCAqbm90KiBieSBhbnkgc29ydCBvZiBjbHVzdGVyaW5nIGFuYWx5c2lzLikKCiMjIFBhY2tldCAxCgpgYGB7ciBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KZF9sb25nX3N1YnNjYWxlICU+JQogIGZpbHRlcihwYWNrZXQgPT0gMSwgIWlzLm5hKHN1bV9zY29yZSkpICU+JQogIG11dGF0ZShzdWJzY2FsZSA9IAogICAgICAgICAgIGZhY3RvcihzdWJzY2FsZSwKICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiZXh3bCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHdsX2V4dHJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHNlXzAxdG8xNCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2VfMTV0bzE2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZXYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3NlbnNvcnlfc2Vla2luZyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fYm9keV9hd2FyZW5lc3MiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3RyYWl0X21ldGFtb29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyMl9oYWxsdWNpbmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2RpYWxvZ2ljX3NwZWVjaCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2V2YWxfbW90aXZfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19oYXJkeV9iZW50YWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyX3Bvc2V5X2xvc2NoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb19sZXdpY2tpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YV92YW5fZWxrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X2NvbmZpZGVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfcG9zaXRpdmVfYmVsaWVmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9jb2duaXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfdW5jb250cm9sbGFiaWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfbmVlZF9jb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19tZW50YWxfc3RhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19saWZlX2V2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfaW5hbmltYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19zZWx2ZXNfc291bHNfd29ybGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2VwaXN0ZW1pYyIpLAogICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJhYnNvcnB0aW9uICh0ZWxsZWdlbikiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJzb3JwdGlvbiAoZXh0cmEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICgjMS0xNCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXMgKCMxNS0xNikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGlyaXR1YWwgZXZlbnRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNvcnkgc2Vla2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvZHkgYXdhcmVuZXNzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVudGlvbiB0byBmZWVsaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhbGx1Y2luYXRpb24iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZGlhbG9naWMgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZXZhbHVhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYXJpbmcgZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2Rpbmcgc3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW5kIG1ldGFwaG9ycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBsYWNrIG9mIGNvZ25pdGl2ZSBjb25maWRlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHBvc2l0aXZlIGJlbGllZnMgcmU6IHdvcnJ5aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGNvZ25pdGl2ZSBzZWxmLWNvbnNjaW91c25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogdW5jb250cm9sbGFiaWxpdHkvZGFuZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IG5lZWQgdG8gY29udHJvbCB0aG91Z2h0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1lbnRhbCBzdGF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBsaWZlIGV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGluYW5pbWF0ZSBjb25zY2lvdXNuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWluZHMsIHNlbHZlcywgJiB3b3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGVwaXN0ZW1vbG9neSIpKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShzdWJzY2FsZSkpICU+JQogIHNwcmVhZChzdWJzY2FsZSwgc3VtX3Njb3JlKSAlPiUKICBzZWxlY3QoLWMoY3RyeSwgd2hlciwgcmVjciwgd2hvYykpICU+JQogIG11dGF0ZShzdWJqID0gcGFzdGUoc3ViaiwgcGFja2V0LCB2ZXJzaW9uLCBzZXAgPSAiXyIpKSAlPiUKICBzZWxlY3QoLXBhY2tldCwgLXZlcnNpb24pICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgcmVtb3ZlX3Jvd25hbWVzKCkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzdWJqIikgJT4lCiAgY29yKHVzZSA9ICJwYWlyd2lzZS5jb21wbGV0ZS5vYnMiKSAlPiUKICAjIGNvcnJwbG90IHZlcnNpb246CiAgIyBjb3JycGxvdDo6Y29ycnBsb3QobWV0aG9kID0gImNvbG9yIiwgdGwuY29sID0gImJsYWNrIiwKICAjICAgICAgICAgICAgICAgICAgICBhZGRDb2VmLmNvbCA9ICJibGFjayIsIG9yZGVyID0gImhjbHVzdCIsCiAgIyAgICAgICAgICAgICAgICAgICAgY29sID0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKG4gPSAxMSwgbmFtZSA9ICJQUkduIiksCiAgIyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiXG5QQUNLRVQgMTogY29ycmVsYXRpb25zIGFtb25nIHN1YnNjYWxlcyIpCgogICMgZ2dwbG90IHZlcnNpb246CiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigic3Vic2NhbGVBIikgJT4lCiAgZ2F0aGVyKHN1YnNjYWxlQiwgY29yLCAtc3Vic2NhbGVBKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzdWJzY2FsZUEsIHkgPSBzdWJzY2FsZUIsIGZpbGwgPSBjb3IsIGxhYmVsID0gcm91bmQyKGNvcikpKSArCiAgZ2VvbV90aWxlKCkgKwogIGdlb21fdGV4dChzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gNiksCiAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiUEFDS0VUIDE6IGNvcnJlbGF0aW9ucyBhbW9uZyBzdWJzY2FsZXMiLAogICAgICAgc3VidGl0bGUgPSAidXNpbmcgcGFpcndpc2UgY29tcGxldGUgb2JzZXJ2YXRpb25zIiwKICAgICAgIHggPSAiIiwKICAgICAgIHkgPSAiIikKYGBgCgojIyBQYWNrZXQgMgoKYGBge3IgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmRfbG9uZ19zdWJzY2FsZSAlPiUKICBmaWx0ZXIocGFja2V0ID09IDIsICFpcy5uYShzdW1fc2NvcmUpKSAlPiUKICBtdXRhdGUoc3Vic2NhbGUgPSAKICAgICAgICAgICBmYWN0b3Ioc3Vic2NhbGUsCiAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImV4d2wiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh3bF9leHRyYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRzZV8wMXRvMTQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHNlXzE1dG8xNiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGV2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl9zZW5zb3J5X3NlZWtpbmciLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX2JvZHlfYXdhcmVuZXNzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl90cmFpdF9tZXRhbW9vZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlcjJfaGFsbHVjaW5hdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9kaWFsb2dpY19zcGVlY2giLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2lubmVyX3NwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9ldmFsX21vdGl2X2lubmVyX3NwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9faGFyZHlfYmVudGFsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlcl9wb3NleV9sb3NjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29fbGV3aWNraSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFfdmFuX2VsayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9jb25maWRlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X3Bvc2l0aXZlX2JlbGllZnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfY29nbml0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X3VuY29udHJvbGxhYmlsaXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X25lZWRfY29udHJvbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfbWVudGFsX3N0YXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfbGlmZV9ldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2luYW5pbWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfc2VsdmVzX3NvdWxzX3dvcmxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19lcGlzdGVtaWMiKSwKICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiYWJzb3JwdGlvbiAodGVsbGVnZW4pIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFic29ycHRpb24gKGV4dHJhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAoIzEtMTQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICgjMTUtMTYpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Bpcml0dWFsIGV2ZW50cyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zb3J5IHNlZWtpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib2R5IGF3YXJlbmVzcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbnRpb24gdG8gZmVlbGluZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYWxsdWNpbmF0aW9uIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGRpYWxvZ2ljIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGV2YWx1YXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbm5lciBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFyaW5nIGV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIHN0eWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWluZCBtZXRhcGhvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbGFjayBvZiBjb2duaXRpdmUgY29uZmlkZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBwb3NpdGl2ZSBiZWxpZWZzIHJlOiB3b3JyeWluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBjb2duaXRpdmUgc2VsZi1jb25zY2lvdXNuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHVuY29udHJvbGxhYmlsaXR5L2RhbmdlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBuZWVkIHRvIGNvbnRyb2wgdGhvdWdodHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBtZW50YWwgc3RhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbGlmZSBldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBpbmFuaW1hdGUgY29uc2Npb3VzbmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1pbmRzLCBzZWx2ZXMsICYgd29ybGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBlcGlzdGVtb2xvZ3kiKSkpICU+JQogIGZpbHRlcighaXMubmEoc3Vic2NhbGUpKSAlPiUKICBzZWxlY3QoLWMoY3RyeSwgd2hlciwgcmVjciwgd2hvYykpICU+JQogIHNwcmVhZChzdWJzY2FsZSwgc3VtX3Njb3JlKSAlPiUKICBtdXRhdGUoc3ViaiA9IHBhc3RlKHN1YmosIHBhY2tldCwgdmVyc2lvbiwgc2VwID0gIl8iKSkgJT4lCiAgc2VsZWN0KC1wYWNrZXQsIC12ZXJzaW9uKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIHJlbW92ZV9yb3duYW1lcygpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaiIpICU+JQogIGNvcih1c2UgPSAicGFpcndpc2UuY29tcGxldGUub2JzIikgJT4lCiAgIyBjb3JycGxvdCB2ZXJzaW9uOgogICMgY29ycnBsb3Q6OmNvcnJwbG90KG1ldGhvZCA9ICJjb2xvciIsIHRsLmNvbCA9ICJibGFjayIsCiAgIyAgICAgICAgICAgICAgICAgICAgYWRkQ29lZi5jb2wgPSAiYmxhY2siLCBvcmRlciA9ICJoY2x1c3QiLAogICMgICAgICAgICAgICAgICAgICAgIGNvbCA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gMTEsIG5hbWUgPSAiUFJHbiIpLAogICMgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIlxuUEFDS0VUIDI6IGNvcnJlbGF0aW9ucyBhbW9uZyBzdWJzY2FsZXMiKQoKICAjIGdncGxvdCB2ZXJzaW9uOgogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInN1YnNjYWxlQSIpICU+JQogIGdhdGhlcihzdWJzY2FsZUIsIGNvciwgLXN1YnNjYWxlQSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc3Vic2NhbGVBLCB5ID0gc3Vic2NhbGVCLCBmaWxsID0gY29yLCBsYWJlbCA9IHJvdW5kMihjb3IpKSkgKwogIGdlb21fdGlsZSgpICsKICBnZW9tX3RleHQoc2l6ZSA9IDMpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDYpLAogICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIlBBQ0tFVCAyOiBjb3JyZWxhdGlvbnMgYW1vbmcgc3Vic2NhbGVzIiwKICAgICAgIHN1YnRpdGxlID0gInVzaW5nIHBhaXJ3aXNlIGNvbXBsZXRlIG9ic2VydmF0aW9ucyIsCiAgICAgICB4ID0gIiIsCiAgICAgICB5ID0gIiIpCmBgYAoKIyMgUGFja2V0IDMKCmBgYHtyIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkX2xvbmdfc3Vic2NhbGUgJT4lCiAgZmlsdGVyKHBhY2tldCA9PSAzLCAhaXMubmEoc3VtX3Njb3JlKSkgJT4lCiAgbXV0YXRlKHN1YnNjYWxlID0gCiAgICAgICAgICAgZmFjdG9yKHN1YnNjYWxlLAogICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJleHdsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4d2xfZXh0cmEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2VfMDF0bzE0IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRzZV8xNXRvMTYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BldiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fc2Vuc29yeV9zZWVraW5nIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl9ib2R5X2F3YXJlbmVzcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fdHJhaXRfbWV0YW1vb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZXIyX2hhbGx1Y2luYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfZGlhbG9naWNfc3BlZWNoIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9pbm5lcl9zcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfZXZhbF9tb3Rpdl9pbm5lcl9zcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX2hhcmR5X2JlbnRhbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZXJfcG9zZXlfbG9zY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvX2xld2lja2kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhX3Zhbl9lbGsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfY29uZmlkZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9wb3NpdGl2ZV9iZWxpZWZzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X2NvZ25pdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF91bmNvbnRyb2xsYWJpbGl0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9uZWVkX2NvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X21lbnRhbF9zdGF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2xpZmVfZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19pbmFuaW1hdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X3NlbHZlc19zb3Vsc193b3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfZXBpc3RlbWljIiksCiAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImFic29ycHRpb24gKHRlbGxlZ2VuKSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYnNvcnB0aW9uIChleHRyYSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXMgKCMxLTE0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAoIzE1LTE2KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwaXJpdHVhbCBldmVudHMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc29yeSBzZWVraW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9keSBhd2FyZW5lc3MiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW50aW9uIHRvIGZlZWxpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFsbHVjaW5hdGlvbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBkaWFsb2dpYyBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBpbm5lciBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBldmFsdWF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhcmluZyBldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBzdHlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbmQgbWV0YXBob3JzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGxhY2sgb2YgY29nbml0aXZlIGNvbmZpZGVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogcG9zaXRpdmUgYmVsaWVmcyByZTogd29ycnlpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogY29nbml0aXZlIHNlbGYtY29uc2Npb3VzbmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiB1bmNvbnRyb2xsYWJpbGl0eS9kYW5nZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbmVlZCB0byBjb250cm9sIHRob3VnaHRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWVudGFsIHN0YXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGxpZmUgZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogaW5hbmltYXRlIGNvbnNjaW91c25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBtaW5kcywgc2VsdmVzLCAmIHdvcmxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogZXBpc3RlbW9sb2d5IikpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHN1YnNjYWxlKSkgJT4lCiAgc3ByZWFkKHN1YnNjYWxlLCBzdW1fc2NvcmUpICU+JQogIHNlbGVjdCgtYyhjdHJ5LCB3aGVyLCByZWNyLCB3aG9jKSkgJT4lCiAgbXV0YXRlKHN1YmogPSBwYXN0ZShzdWJqLCBwYWNrZXQsIHZlcnNpb24sIHNlcCA9ICJfIikpICU+JQogIHNlbGVjdCgtcGFja2V0LCAtdmVyc2lvbikgJT4lCiAgZGlzdGluY3QoKSAlPiUKICByZW1vdmVfcm93bmFtZXMoKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInN1YmoiKSAlPiUKICBjb3IodXNlID0gInBhaXJ3aXNlLmNvbXBsZXRlLm9icyIpICU+JQogICMgY29ycnBsb3QgdmVyc2lvbjoKICAjIGNvcnJwbG90Ojpjb3JycGxvdChtZXRob2QgPSAiY29sb3IiLCB0bC5jb2wgPSAiYmxhY2siLAogICMgICAgICAgICAgICAgICAgICAgIGFkZENvZWYuY29sID0gImJsYWNrIiwgb3JkZXIgPSAiaGNsdXN0IiwKICAjICAgICAgICAgICAgICAgICAgICBjb2wgPSBSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwobiA9IDExLCBuYW1lID0gIlBSR24iKSwKICAjICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICJcblBBQ0tFVCAzOiBjb3JyZWxhdGlvbnMgYW1vbmcgc3Vic2NhbGVzIikKCiAgIyBnZ3Bsb3QgdmVyc2lvbjoKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJzY2FsZUEiKSAlPiUKICBnYXRoZXIoc3Vic2NhbGVCLCBjb3IsIC1zdWJzY2FsZUEpICU+JQogIGdncGxvdChhZXMoeCA9IHN1YnNjYWxlQSwgeSA9IHN1YnNjYWxlQiwgZmlsbCA9IGNvciwgbGFiZWwgPSByb3VuZDIoY29yKSkpICsKICBnZW9tX3RpbGUoKSArCiAgZ2VvbV90ZXh0KHNpemUgPSAzKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIoZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSA2KSwKICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJQQUNLRVQgMzogY29ycmVsYXRpb25zIGFtb25nIHN1YnNjYWxlcyIsCiAgICAgICBzdWJ0aXRsZSA9ICJ1c2luZyBwYWlyd2lzZSBjb21wbGV0ZSBvYnNlcnZhdGlvbnMiLAogICAgICAgeCA9ICIiLAogICAgICAgeSA9ICIiKQpgYGAKCiMjIEFsbCBwYWNrZXRzCgpKdXN0IGZvciBmdW4sIGhlcmUncyBhIGxvb2sgYXQgdGhlIGNvcnJlbGF0aW9ucyBhbW9uZyBpbmRpdmlkdWFsIHBhcnRpY2lwYW50cycgc3Vic2NhbGUgc2NvcmVzIGFjcm9zcyBhbGwgc2NhbGVzLiAqKk5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIHBhaXJzIG9mIHN1YnNjYWxlcyBwcm9iYWJseSBoYXZlIHZlcnkgZmV3IG9ic2VydmF0aW9ucyBnb2luZyBpbnRvIHRoZXNlIGNvcnJlbGF0aW9ucyEhIFNvIHRha2UgdGhpcyB3aXRoIGEgZ3JhaW4gb2Ygc2FsdC4qKgoKYGBge3IsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAxfQpkX2xvbmdfc3Vic2NhbGUgJT4lCiAgbXV0YXRlKHN1YnNjYWxlID0gCiAgICAgICAgICAgZmFjdG9yKHN1YnNjYWxlLAogICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJleHdsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4d2xfZXh0cmEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2VfMDF0bzE0IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRzZV8xNXRvMTYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BldiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fc2Vuc29yeV9zZWVraW5nIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl9ib2R5X2F3YXJlbmVzcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fdHJhaXRfbWV0YW1vb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZXIyX2hhbGx1Y2luYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfZGlhbG9naWNfc3BlZWNoIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9pbm5lcl9zcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfZXZhbF9tb3Rpdl9pbm5lcl9zcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX2hhcmR5X2JlbnRhbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZXJfcG9zZXlfbG9zY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvX2xld2lja2kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhX3Zhbl9lbGsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfY29uZmlkZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9wb3NpdGl2ZV9iZWxpZWZzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X2NvZ25pdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF91bmNvbnRyb2xsYWJpbGl0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9uZWVkX2NvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X21lbnRhbF9zdGF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2xpZmVfZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19pbmFuaW1hdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X3NlbHZlc19zb3Vsc193b3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfZXBpc3RlbWljIiksCiAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImFic29ycHRpb24gKHRlbGxlZ2VuKSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYnNvcnB0aW9uIChleHRyYSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXMgKCMxLTE0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAoIzE1LTE2KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwaXJpdHVhbCBldmVudHMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc29yeSBzZWVraW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9keSBhd2FyZW5lc3MiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW50aW9uIHRvIGZlZWxpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFsbHVjaW5hdGlvbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBkaWFsb2dpYyBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBpbm5lciBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBldmFsdWF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhcmluZyBldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBzdHlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbmQgbWV0YXBob3JzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGxhY2sgb2YgY29nbml0aXZlIGNvbmZpZGVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogcG9zaXRpdmUgYmVsaWVmcyByZTogd29ycnlpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogY29nbml0aXZlIHNlbGYtY29uc2Npb3VzbmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiB1bmNvbnRyb2xsYWJpbGl0eS9kYW5nZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbmVlZCB0byBjb250cm9sIHRob3VnaHRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWVudGFsIHN0YXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGxpZmUgZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogaW5hbmltYXRlIGNvbnNjaW91c25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBtaW5kcywgc2VsdmVzLCAmIHdvcmxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogZXBpc3RlbW9sb2d5IikpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHN1YnNjYWxlKSkgJT4lCiAgc3ByZWFkKHN1YnNjYWxlLCBzdW1fc2NvcmUpICU+JQogIHNlbGVjdCgtYyhjdHJ5LCB3aGVyLCByZWNyLCB3aG9jKSkgJT4lCiAgbXV0YXRlKHN1YmogPSBwYXN0ZShzdWJqLCBwYWNrZXQsIHZlcnNpb24sIHNlcCA9ICJfIikpICU+JQogIHNlbGVjdCgtcGFja2V0LCAtdmVyc2lvbikgJT4lCiAgZGlzdGluY3QoKSAlPiUKICByZW1vdmVfcm93bmFtZXMoKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInN1YmoiKSAlPiUKICBjb3IodXNlID0gInBhaXJ3aXNlLmNvbXBsZXRlLm9icyIpICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInN1YnNjYWxlQSIpICU+JQogIGdhdGhlcihzdWJzY2FsZUIsIGNvciwgLXN1YnNjYWxlQSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc3Vic2NhbGVBLCB5ID0gc3Vic2NhbGVCLCBmaWxsID0gY29yLCBsYWJlbCA9IHJvdW5kMihjb3IpKSkgKwogIGdlb21fdGlsZSgpICsKICBnZW9tX3RleHQoc2l6ZSA9IDMpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDYpLAogICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIlBBQ0tFVFMgMS0zOiBjb3JyZWxhdGlvbnMgYW1vbmcgc3Vic2NhbGVzIiwKICAgICAgIHN1YnRpdGxlID0gInVzaW5nIHBhaXJ3aXNlIGNvbXBsZXRlIG9ic2VydmF0aW9ucyIsCiAgICAgICB4ID0gIiIsCiAgICAgICB5ID0gIiIpCmBgYAoKIyBDb3JyZWxhdGlvbnMgYW1vbmcgc3Vic2NhbGVzIGJ5IHNpdGUKCklmIHdlIHdlcmUgZmVlbGluZyB3YWNreSwgd2UgY291bGQgYWxzbyBsb29rIGF0IHRoZSBjb3JyZWxhdGlvbnMgYmV0d2VlbiBzY2FsZXMgaW4gdGhlaXIgbWVhbnMgZm9yIGVhY2ggc2l0ZS4gVGhpcyBpcyBhIHRvdGFsbHkgd2VpcmQgd2F5IHRvIGxvb2sgYXQgdGhpcywgYmVjYXVzZSB0aGVyZSBhcmUgb25seSA1IHNpdGVzIChpbnN0ZWFkIG9mLCBlLmcuLCAxMDAgb3IgMjAwKS4gQnV0IGp1c3QgZm9yIGZ1bi4uLiAKClRvIHJlYWQgdGhpcyBwbG90LCBmaW5kIG9uZSBzY2FsZSBvbiB0aGUgeC1heGlzLCBhbmQgYW5vdGhlciBzY2FsZSBvbiB0aGUgeS1heGlzLiBUaGUgdmFsdWUgKGFuZCBjb2xvcikgYXQgdGhhdCBwb2ludCBpbiB0aGUgZ3JpZCBzaG93cyB5b3UgdGhlIGNvcnJlbGF0aW9uIGJldHdlZW4gdGhlc2UgdHdvIHN1YnNjYWxlIG1lYW5zIGFjcm9zcyB0aGUgNSBzaXRlcy4gVGhlIG1heGltdW0gcG9zc2libGUgY29ycmVsYXRpb24gaXMgKzEgKHJlZCksIGFuZCB0aGUgbWluaW11bSBpcyAtMSAoYmx1ZSkuCgpJIG9yZGVyZWQgdGhlIHNjYWxlcyBhY2NvcmRpbmcgdG8gdGhlIGNsdXN0ZXIgYW5hbHlzaXMgd2UganVzdCBkaWQgYWJvdmUsIHNvIHlvdSBjYW4gc2VlICJwYXRjaGVzIiBvZiBzY2FsZXMgdGhhdCBhbGwgdGVuZGVkIHRvIGhhdmUgc2ltaWxhciBwYXR0ZXJucyBvZiBtZWFucyBhY3Jvc3Mgc2l0ZXMuCgpgYGB7ciwgZmlnLndpZHRoID0gNywgZmlnLmFzcCA9IDF9CmRfbG9uZ19zdWJzY2FsZV9ib290ICU+JQogIGZpbHRlcighZ3JlcGwoInRoYWkiLCBzdWJzY2FsZSksICFpcy5uYShzdWJzY2FsZSkpICU+JQogIG11dGF0ZShzdWJzY2FsZSA9IGlmZWxzZShzdWJzY2FsZSA9PSAiaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGUoYXMuY2hhcmFjdGVyKHN1YnNjYWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N1YigicGFja2V0ICIsICJwIiwgcGFja2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gIl8iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKHN1YnNjYWxlKSkpICU+JQogIGRpc3RpbmN0KGN0cnksIHN1YnNjYWxlLCBNZWFuKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc3ByZWFkKHN1YnNjYWxlLCBNZWFuKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJjdHJ5IikgJT4lCiAgY29yKHVzZSA9ICJwYWlyd2lzZS5jb21wbGV0ZS5vYnMiKSAlPiUKICAjIGNvcnJwbG90IHZlcnNpb246CiAgIyBjb3JycGxvdDo6Y29ycnBsb3QobWV0aG9kID0gImNvbG9yIiwgdGwuY29sID0gImJsYWNrIiwKICAjICAgICAgICAgICAgICAgICAgICBhZGRDb2VmLmNvbCA9ICJibGFjayIsIG9yZGVyID0gImhjbHVzdCIsCiAgIyAgICAgICAgICAgICAgICAgICAgY29sID0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKG4gPSAxMSwgbmFtZSA9ICJQUkduIiksCiAgIyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiXG5jb3JyZWxhdGlvbnMgYmV0d2VlbiBzdWJzY2FsZSBtZWFucyAoYnkgY291bnRyeSksIG9yZGVyZWQgYnkgaGllcmFyY2hpY2FsIGNsdXN0ZXJpbmciKQoKICAjIGdncGxvdCB2ZXJzaW9uOgogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInN1YnNjYWxlQSIpICU+JQogIG11dGF0ZShzdWJzY2FsZUFfb3JkZXIgPSBhcy5udW1lcmljKGZhY3Rvcihhcy5udW1lcmljKGZhY3RvcihzdWJzY2FsZUEpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gY2x1c3Rfc3Vic2NhbGVzJG9yZGVyKSkpICU+JQogIGdhdGhlcihzdWJzY2FsZUIsIGNvciwgLXN1YnNjYWxlQSwgLXN1YnNjYWxlQV9vcmRlcikgJT4lCiAgbXV0YXRlKHN1YnNjYWxlQl9vcmRlciA9IGFzLm51bWVyaWMoZmFjdG9yKGFzLm51bWVyaWMoZmFjdG9yKHN1YnNjYWxlQikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjbHVzdF9zdWJzY2FsZXMkb3JkZXIpKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihzdWJzY2FsZUEsIGRlc2Moc3Vic2NhbGVBX29yZGVyKSksIAogICAgICAgICAgICAgeSA9IHJlb3JkZXIoc3Vic2NhbGVCLCBkZXNjKHN1YnNjYWxlQl9vcmRlcikpLCAKICAgICAgICAgICAgIGZpbGwgPSBjb3IsIGxhYmVsID0gcm91bmQyKGNvcikpKSArCiAgZ2VvbV90aWxlKCkgKwogIGdlb21fdGV4dChzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gNTApLAogICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gImNvcnJlbGF0aW9ucyBhbW9uZyBtZWFuIHN1YnNjYWxlIHNjb3JlcywgYnkgc2l0ZSIsCiAgICAgICBzdWJ0aXRsZSA9ICJ1c2luZyBwYWlyd2lzZSBjb21wbGV0ZSBvYnNlcnZhdGlvbnNcbm9yZGVyZWQgdmlhIGhpZXJhcmNoaWNhbCBjbHVzdGVyaW5nIGFuYWx5c2lzIiwKICAgICAgIGZpbGwgPSAiY29ycmVsYXRpb25cbmNvZWZmLiAocikiLAogICAgICAgeCA9ICIiLAogICAgICAgeSA9ICIiKQpgYGAK